import {objectExistsInArray} from '@/views/youshuda/utils/youshuda'

const state = {
  //所有组件渲染集合
  componentRenders: {},
  //所有组件属性配置集合
  componentConfigVue: {},
  //输入型组件
  inputComponents: [],
  //选择型组件
  selectComponents: [],
  //布局型组件
  layoutComponents: [],
  //图表型组件
  chartComponents: [],
  //数据型组件
  dataComponents: [],
  //自定义组件
  customComponents: []
}
const mutations = {
  // 保存组件
  PutComponent: (state,{elType,config,configVue,renderComponent}) =>{
    //以配置文件中moduleType为组件唯一标识
    let moduleType = config['moduleType']
    //添加组件渲染集合
    state.componentRenders[moduleType]=renderComponent
    state.componentConfigVue[moduleType]=configVue
    /**
     * 输入型组件
     * InputComponent = "1";
     * 选择型组件
     * SelectComponents = "2";
     * 布局型组件
     * LayoutComponents = "3";
     * 图表型组件
     * ChartComponents = "4";
     * 数据型组件
     * DataComponents = "5";
     * 自定义组件
     * CustomComponents = "6";
     */
    if(elType == '1' && !objectExistsInArray(state.inputComponents,config)){
      state.inputComponents.push(config)
    }
    if(elType == '2' && !objectExistsInArray(state.selectComponents,config)){
      // 保存选择型组件
      state.selectComponents.push(config)
    }
    if(elType == '3' && !objectExistsInArray(state.layoutComponents,config)){
      // 保存布局型组件
      state.layoutComponents.push(config)
    }
    if(elType == '4' && !objectExistsInArray(state.chartComponents,config)){
      // 保存图表型组件
      state.chartComponents.push(config)
    }
    if(elType == '5' && !objectExistsInArray(state.dataComponents,config)){
      // 保存数据型组件
      state.dataComponents.push(config)
    }
    if(elType == '6' && !objectExistsInArray(state.customComponents,config)){
      // 保存自定义型组件
      state.customComponents.push(config)
    }
  }
}

const actions = {
  // 保存组件
  PutComponent({ commit }, data){
    commit('PutComponent', data)
  },
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

